u`
eLXgсFp.329uexception04.csv
Q[JKF̕`AʑJځAʍĕ` Ȃ

p.329icatch̕LqjFČfځ{

EcatchɂėONXw肷邱ƂŁAOɈقȂΏ邱Ƃł
EF 
@try {OΏ} 
@catch(ONX@ ) {O@} 
@catch(ONXA ) {OA} 
@F
EAOΏۂŗOƁALq̏ォ珇Ƀ}b`ÔŁAΉONX̊{NXɋLqĂƁu΂ɎsȂôŃG[vƂȂ̂Œ
EŌɁucatch (Exception){c}vLq邱ƂŁuL̂ǂɂĂ͂܂ȂOvƂLqł
Eifelseswitchdefaultɋ߂ʒuÂƂȂ
EȂA̋LqɂuǂȗONĂُIȂ(p.323̍\)vƂȂ̂Œ

p.329 exception04.cs

//p.329 exception04.cs
using System;
class exception04 {
    public static void Main() {
        int x = 10, y = 0;
        try { //OΏ
            Console.WriteLine("{0} / {1} = {2}", x, y, x / y); //[ZO
        }
        catch (IndexOutOfRangeException io) { //z͈͊OO(sȂ)
            Console.WriteLine(io.Message); //ONX̃vpeBŗObZ[W𓾂ĕ\
        }
        catch (DivideByZeroException) { //[ZO(s)
            Console.WriteLine("0ŊႾ߂");
        }
        catch (Exception ex) { //ėpO(sȂ)Fifelseswitchdefaultɋ߂ʒuÂ
            Console.WriteLine(ex.Message);
        }
    }
}

AWKFp.329 exception04.cs

Ep.330̂悤ɁAcatchubN̏ύXƃG[ɂȂ邱ƂmF悤
E{̗ONXcatchɂAh̗ONXŎOł
EIndexOutOfRangeExceptionNXDivideByZeroExceptionNX͂ǂAExceptionNX̔hNXÂQNX̊Ԃɂ͌p֌W͂Ȃ̂ŁAcatchubN̏ύXĂǂ
EAcatch (Exception ex)Acatch (IndexOutOfRangeException io)catch (DivideByZeroException)̑OɒuƁu΂ɎsȂôŃG[vƂȂ

쐬is͂łȂj

//AWKFp.329 exception04.cs
using System;
class exception04 {
    public static void Main() {
        int x = 10, y = 0;
        try { //OΏ
            Console.WriteLine("{0} / {1} = {2}", x, y, x / y); //[ZO
        }
        catch (DivideByZeroException) { //[ZO(s)
            Console.WriteLine("0ŊႾ߂");
        }
        catch (Exception ex) { //ėpO(sȂ)Fifelseswitchdefaultɋ߂ʒuÂ
            Console.WriteLine(ex.Message);
        }
        catch (IndexOutOfRangeException io) { //z͈͊OO(sȂ) yG[ɂȂz
            Console.WriteLine(io.Message); //ONX̃vpeBŗObZ[W𓾂ĕ\
        }
    }
}

p.330 finallyubN

EOɂėO̗Lɂ炸sꍇAfinallyubNpĒǋLł
EpƂĂ̓f[^x[XʐMȂǂ̊O\[X̐ؒf̂悤ȁAn
EOȂ΁AtryubN̍Ō̍s̎ɁAfinallyubN̓esA͑s
EOcatchꂽꍇ́AcatchubN̍Ō̍s̎ɁAfinallyubN̓esA͑s
EOcatchȂꍇ́AfinallyubN̓esǍɈُI

p.331 exception05.cs

//p.331 exception05.cs
using System;
class exception05 {
    public static void Main() {
        string strWarusu; //͗p
        int x; //ϊ
        bool bEnd = false; //ItOIt
        while (true) { //[v
            Console.Write("鐔--- ");
            strWarusu = Console.ReadLine();
            try { //OΏ
                x = int.Parse(strWarusu); //`Ỏ\
                Console.WriteLine("10 / {0} = {1}", x, 10 / x); //[ZỎ\
            }
            catch (DivideByZeroException d) { //[ZO
                Console.WriteLine(d.Message);
            }
            catch (Exception e) { //[ZȊO̗O
                Console.WriteLine(e.Message);
            }
            finally { //O̗Lɂ炸s鏈
                Console.Write("܂(Y/N)---");
                if (Console.ReadLine()[0] == 'N') {
                    bEnd = true; //ItOI
                }
            }
            if (bEnd) { //ItOIH
                break; //JԂ𔲂
            }
        }
    }
}

AWKFp.331 exception05.cs

EuOcatchȂꍇvmF悤
ËׂɁucatch (Exception e)vucatch (FormatException e)vɏ悤
EāAint^̍ől𒴂͂sāAfinallyubN̓esꂽAُI邱ƂmF悤

쐬

//AWKFp.331 exception05.cs
using System;
class exception05 {
    public static void Main() {
        string strWarusu; //͗p
        int x; //ϊ
        bool bEnd = false; //ItOIt
        while (true) { //[v
            Console.Write("鐔--- ");
            strWarusu = Console.ReadLine();
            try { //OΏ
                x = int.Parse(strWarusu); //`Ỏ\
                Console.WriteLine("10 / {0} = {1}", x, 10 / x); //[ZỎ\
            }
            catch (DivideByZeroException d) { //[ZO
                Console.WriteLine(d.Message);
            }
            catch (FormatException e) { //yύXz`O
                Console.WriteLine(e.Message);
            }
            finally { //O̗Lɂ炸s鏈
                Console.Write("܂(Y/N)---");
                if (Console.ReadLine()[0] == 'N') {
                    bEnd = true; //ItOI
                }
            }
            if (bEnd) { //ItOIH
                break; //JԂ𔲂
            }
        }
    }
}

p.333iÕR[X^bNj

Ep.326ŗONXStackTracevpeBŃR[X^bNƂʂA\bh烁\bhĂԍ\̓X^bNŕ\Ă
EāAĂ΂Ă郁\bhŗOƁAɈُI邱Ƃ͂ȂAĂł郁\bȟĂяoʒuŗOƂɂȂ
EāAɗOLqđΉł邵AđΉȂƂŁÃ\bhĂяoĂ邳炢ɏʂ̃\bhɔC邱Ƃł
F
void Method1() { 
@Method2(); //@\bh2ĂԁAE[ZO߂邪OȂ̂ňُI
}
void Method2() { 
@Method3(); //A\bh3ĂԁAD[ZO߂邪OȂ̂Method1ɓ
}
void Method3() { 
@int a = 0; b = 1 / a; //B[ZOACOȂ̂Method2ɖ߂()
}

p.333 throw

EvO}Ӑ}IɗO𔭐(O𓊂)߂ɗp̂throw
EF throw OIuWFNg;
EOIuWFNǵAcatchubNŎ󂯎̂łǂunew ONX()vŐĂǂ
EȂAcatchubN̒Ŏ󂯎OIuWFNgthrow邱ƂŁAOsĂAO𗝗RƂĈُI(܂͌ĂяoɔC)Ƃł
EF
@try {c}
@catch (ONX ) { O; throw ; }
F
void Method1() { 
@try {
@@Method2(); //@\bh2ĂԁAEO߂̂ŗO
@} catch {
@@O; //FMethod2Method3ɂO܂Ƃ߂ďł
@}
}
void Method2() { 
@Method3(); //A\bh3ĂԁAO߂邪OȂ̂Method1ɓ
}
void Method3() { 
@throw new Exception(); //BO𔭐ACOȂ̂Method2ɖ߂()
}
EɁÃNXɂ郁\bhAʂŗp郁\bh̏ꍇAĂ΂鑤ŗOꍇɁAǂΗǂ߂ȂƂ
EāAO͌Ăяȏ{ōsׂłiFʂɕ\AʐMŒʒmȂǁjĂ΂鑤ɗOKv͂ȂƂ
E܂A̎d|𗘗p邱ƂŁAĂяoɎԂm点邱Ƃɂp邱Ƃł
F
void Method1() { 
@try {
@@Method2(); //@\bh2ĂԁABO߂̂ŗO
@} catch {
@@O; //CMethod2ɂOł
@}
}
void Method2() { 
@if ( < 0) throw new Exception(); //A̐ȂONAOȂ̂Method1ɓ
}

p.334 exception06.cs

//p.334 exception06.cs
using System;
class MyClassA { //iIȃNX@
    public void Calc() { //iIȃ\bh@
        int x = 10, y = 0;
        int[] arr = new int[5]{1, 2, 3, 4, 5};
        try { //OΏ
            Console.WriteLine("{0}, {1}", arr[x], x / y); //z͈͊OO
        } catch (IndexOutOfRangeException i) { //z͈͊OO
            Console.WriteLine(i.Message);
            DivideByZeroException d = new DivideByZeroException(); //[ZOIuWFNg𐶐
            Console.WriteLine("Othrow܂");
            throw d; //[ZOIuWFNgĂяoɓisK؂eXgpj
        }
    }
}
class MyClassB { //iIȃNXA
    public void Calc() { //iIȃ\bhA
        MyClassA a = new MyClassA(); //iIȃNX@̃CX^X
        try { //OΏ
            a.Calc(); //iIȃ\bh@Ăԁi[ZOIuWFNgĂj
        }
        catch (DivideByZeroException d) { //[ZO
            Console.WriteLine("Ocatch߂ł");
            Console.WriteLine(d.Message);
        }
    }
}
class exception06 {
    public static void Main() {
        MyClassB b = new MyClassB(); //iIȃNXÃCX^X
        b.Calc(); //iIȃ\bhAĂԁiŗOĐIj
    }
}

AWKFp.334 exception06.cs

EiIȃ\bh@̗Oł́Ai.Message̕\݂̂sANO𓊂邾ɂ悤
EiIȃ\bhA̗Oł́A{̔z͈͊OȎΏs悤ɂ悤

쐬

//AWKFp.334 exception06.cs
using System;
class MyClassA { //iIȃNX@
    public void Calc() { //iIȃ\bh@
        int x = 10, y = 0;
        int[] arr = new int[5]{1, 2, 3, 4, 5};
        try { //OΏ
            Console.WriteLine("{0}, {1}", arr[x], x / y); //z͈͊OO
        } catch (IndexOutOfRangeException i) { //z͈͊OO
            Console.WriteLine(i.Message);
            // DivideByZeroException d = new DivideByZeroException(); //y폜z[ZOIuWFNg𐶐
            // Console.WriteLine("Othrow܂"); //y폜z
            throw i; //yύXzŎ󂯎OIuWFNgĂяoɓ
        }
    }
}
class MyClassB { //iIȃNXA
    public void Calc() { //iIȃ\bhA
        MyClassA a = new MyClassA(); //iIȃNX@̃CX^X
        try { //OΏ
            a.Calc(); //iIȃ\bh@Ăԁi[ZOIuWFNgĂj
        }
        catch (IndexOutOfRangeException d) { //yύXzz͈͊OO
            Console.WriteLine("Ocatch߂ł");
            Console.WriteLine(d.Message);
        }
    }
}
class exception06 {
    public static void Main() {
        MyClassB b = new MyClassB(); //iIȃNXÃCX^X
        b.Calc(); //iIȃ\bhAĂԁiŗOĐIj
    }
}

p.336iPƂthrowj

EcatchubN̒ɂẮAPƂthrowLq\ŁAcatchÔ܂ܓ
EOsĂAO𗝗RƂĈُIꍇAĂяoɔCꍇɗp

p.336 exception07.cs

//p.336 exception07.cs
using System;
class MyClass { //iIȃNX
    int x = 5, y = 0;
    public void Calc() { //iIȃ\bh
        try {
            Console.WriteLine("{0}", x / y); //[ZO
        }
        catch (DivideByZeroException d) { //[ZO
            Console.WriteLine(d.Message);
            throw; //Ŏ󂯎[ZOIuWFNgĂяoɓ
        }
    }
}
class MyClassB { //C̃NX
    public static void Main() {
        MyClass mc = new MyClass(); //iIȃNX̃CX^X
        try {
            mc.Calc(); //iIȃ\bhĂԁi[ZOIuWFNgĂj
        }
        catch (DivideByZeroException d) { //[ZO
            Console.WriteLine(d.TargetSite); //O𓊂\bhuVoid Calc()v\
        }
    }
}

p.337 trỹlXg

EtryubN̒ɁAtry-catch\Lqł
EɂAGȗOKvAOedꍇ̋LqVvɂł

p.337 Fexception08.cs

E013sڂ́u"{0},{1}"v́u"{0}"v̌iRpCG[ɂ͂ȂȂj

p.337 exception08.cs

//p.337 exception08.cs
using System;
class exception08 {
    public static void Main() {
        int x = 10, y = 0;
        try { //OΏۇ@
            try { //OΏۇA
                Console.WriteLine("{0}", x / y); //[ZO
            }
            catch (IndexOutOfRangeException i) { //OΏۇA̔z͈͊OO(sȂ)
                Console.WriteLine(i.Message);
            }
        }
        catch (DivideByZeroException d) { //OΏۇ@̃[ZO
            Console.WriteLine(d.Message);
        }
    }
}

AWKFp.337 exception08.cs

EOΏۇAŃ[ZOł͂ȂAz͈͊OO𔭐āA삪ǂς邩mF悤

쐬

//AWKFp.337 exception08.cs
using System;
class exception08 {
    public static void Main() {
        int x = 10, y = 0;
        try { //OΏۇ@
            try { //OΏۇA
                int[] a = {0}; //yǉz
                Console.WriteLine("{0}", a[1]); //yύXzz͈͊OO
            }
            catch (IndexOutOfRangeException i) { //OΏۇA̔z͈͊OO
                Console.WriteLine(i.Message);
            }
        }
        catch (DivideByZeroException d) { //OΏۇ@̃[ZO(sȂ)
            Console.WriteLine(d.Message);
        }
    }
}

p.338 Ǝ̗O

ESONX̊{NXłExceptionNX́AvO}pNXLqł
E܂AiꕔjeONXɂĂAvO}pNXLqł
@ psF IndexOutOfRangeExceptionNX
EāAvO}KvɉāAӖ̋߂ONXpNXLqėpƗǂ
E̎Ap.326ŐToString()\bhI[o[ChAMessagevpeBnewwŉB؂邱ƂŁAVȃNX̐\悤ɂƗǂ
Eexception09.cŝ悤ɁA̗ONX̃vpeB⃁\bh̓eO̗O肽ꍇɂpł

p.339 exception09.cs

//p.339 exception09.cs
using System;
class MyEx : DivideByZeroException { //[ZONXpO̗ONX
    public new string Message = "0ŊG[ł"; //vpeB̉B؂
    public new string HelpLink = "http://www.kumei.ne.jp/c_lang/";  //
    public override string ToString() { //\bh̃I[o[Ch
        return "0ŊĂ͂܂!!";
    }
}
class exception09 {
    public static void Main() {
        int x;
        Console.Write("鐔()--- ");
        string strWaru = Console.ReadLine();
        try { //OΏ
            x = int.Parse(strWaru);
            if (x == 0) {
                throw new MyEx(); //O̗O𓊂
            }
            Console.WriteLine("12 / {0} = {1}",x, 12 / x);
        }
        catch (MyEx me) { //O̗Ȍ
            Console.WriteLine(me.ToString()); //I[o[Ch\bhs
            Console.WriteLine(me.Message); //B؂vpeBs
            Console.WriteLine(me.HelpLink + "Q"); //B؂vpeBs
        }
        catch (Exception e) { //O̗OȊO̗O
            Console.WriteLine(e.Message);
        }
    }
}

eLXgю\Fp.341ucheckeduncheckedv

Q[JKF̕`AʑJځAʍĕ` Ȃ

e[}21 ̕`iČfځ{j

EtH[AvP[Vł̓tHg⏑w肵ĕʏɕ`ł
E̎AtHgAuVAʒuwł
EtHǵASystem.Drawing.FontNX̃RXgN^Őł
ẼRXgN^͑̃I[o[[h邪AtHgƃ|Cg(傫)w肷 Font(string, float)֗
EF Font f = new Font("CI", 15);
EȂǂ̏w肷ɂFont(string, float, FontStyle)pƗǂ
EFontStyleSystem.Drawing.FontStyle񋓌^ŁA񋓎qBoldőɂł
EF Font f = new Font("CI", 15, FontStyle.Bold);
E̕`Graphics.DrawString\bhōs
EF e.Graphics.DrawString(, tHg, uV, XW, YW)

K19 XRA̕\

EʉE(400,10)當uSCORE:000,000v\悤
EtHg̓CIAF͉FATCY20AX^CBoldƂ

쐬

//K19 XRA̕\
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    Pen mypen = new Pen(Color.Red, 2); //y𐶐(l͐ԁA2)
    Brush bred = new SolidBrush(Color.FromArgb(63, 255, 0, 0)); //uV𐶐(Ԃ̓F)
    Brush byel = new SolidBrush(Color.Yellow); //yǉzuV𐶐(F)
    Font f20 = new Font("CI", 20, FontStyle.Bold); //yǉztHg𐶐(CI20P)
    void DrawCircle(PaintEventArgs e, Pen p, int x, int y, int r) { //yASWAaw肵ĉ~`
        e.Graphics.DrawEllipse(p, x - r, y - r, 2 * r, 2 * r); //~̕`Ă
    }
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        e.Graphics.FillRectangle(bred, 78, 411, 485, 64); //GA𓧖ԂœhԂ
        e.Graphics.DrawRectangle(mypen, 78, 411, 485, 64); //GA̕`
        e.Graphics.DrawString("SCORE:000,000", f20, byel, 400, 10); //yǉzXRA̕`
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        if(e.KeyCode.ToString() == "Escape") { //EscL[ꂽ
            Close(); //tH[AvP[VI
        }
    }
    Program() { //RXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

e[}22 ʑJ

EtH[AvP[Vł́AʂƂɕ\e^A؂ւȂi߂邱Ƃ
EʑJڂƂAႦ΁uX^[gʁ̃vCʁ˃Q[I[o[ʁ˃X^[gʁvƎ
EvOɂẮAʂQ[[hƂĕ\Aϐ`ėpƗǂ
EF int gamemode = 0; //0:X^[gʁA1:vCʁA9:Q[I[o[
EOnPaint\bhɂāAQ[[hƂɈقȂ鏈LqAOnKeyDown\bhȂǂɂāAQ[[hύXΗǂ

e[}23 ʍĕ`

EvOœIɉʂꍇAʂւ̔fWindow.Forms.ControlNX Invalidate()\bhĂԂƂň˗Kv

K20 ^Cgʂ̒ǉ

ENXϐgamemode0ŏĂi0:X^[gʁA1:vCʁj
Egamemode0ł΁Awi摜A^CguGAME1vAbZ[WuHit Enter to Startv\
Egamemode1ł΁Awi摜AGAAXRA\
E^CguGAME1v̓CIA80|CgAAFA(100,100)
EbZ[WuHit Enter to Startv̓CIA25|CgAAFA(200,300)

oFK20 ^Cgʂ̒ǉ

Q[JK\F^C}[ Ȃ
